import com.yoayudo.Usuario
import com.yoayudo.TipoUsuario
import com.yoayudo.Sexo
import com.yoayudo.Evento
import com.yoayudo.EstadoEvento
import com.yoayudo.Direccion
import com.yoayudo.SecRole
import com.yoayudo.SecUser
import com.yoayudo.SecUserSecRole


class BootStrap {
    def springSecurityService
    def init = { servletContext ->
        poblarDatos()
    }
    def destroy = {
    }

    void poblarDatos(){

        //Usuarios de Prueba
        def usuarios = Usuario.list() ?: []
        if (!usuarios){
            def usuario1 = new Usuario(
                    username: "dago",
                    password: "dago",
                    enabled: true,
                    nombre: "Dagoberto",
                    apellido1: "Rebaza",
                    apellido2: "Izquierdo",
                    email: "dago@gmail.com",
                    sexo: Sexo.hombre,
                    fechaNacimiento: new Date(System.currentTimeMillis()-25),
                    fechaAlta: new Date(System.currentTimeMillis()),
                    cp: "28394",
                    tipoUsuario: TipoUsuario.usuario).save(flush:true)
            def usuario2 = new Usuario(
                    username: "elisa",
                    password: "elisa",
                    enabled: true,
                    nombre: "Elisa",
                    apellido1: "quela",
                    apellido2: "lias",
                    email: "elias@gmail.com",
                    sexo: Sexo.mujer,
                    fechaNacimiento: new Date(System.currentTimeMillis()-24),
                    fechaAlta: new Date(System.currentTimeMillis()),
                    cp: "28546",
                    tipoUsuario: TipoUsuario.usuario).save(flush:true)
            def usuario3 = new Usuario(
                    username: "tito",
                    password: "tito",
                    enabled: true,
                    nombre: "Alberto",
                    apellido1: "alonso",
                    apellido2: "de la fuente",
                    email: "eltito@gmail.com",
                    sexo: Sexo.hombre,
                    fechaNacimiento: new Date(System.currentTimeMillis()-27),
                    fechaAlta: new Date(System.currentTimeMillis()),
                    cp: "28254",
                    tipoUsuario: TipoUsuario.usuario).save(flush:true)

            def admin = new Usuario(
                    username: "cheipol",
                    password: "cheipol",
                    enabled: true,
                    nombre: "david",
                    apellido1: "chavez",
                    apellido2: "ontañon",
                    email: "soychavez@gmail.com",
                    sexo: Sexo.hombre,
                    fechaNacimiento: new Date(System.currentTimeMillis()-27),
                    fechaAlta: new Date(System.currentTimeMillis()),
                    cp: "28024",
                    tipoUsuario: TipoUsuario.administrador).save(flush:true)

            def moderador = new Usuario(
                    username: "krose",
                    password: "krose",
                    enabled: true,
                    nombre: "alvaro",
                    apellido1: "sanchez",
                    apellido2: "fraile",
                    email: "noteadmito@gmail.com",
                    sexo: Sexo.hombre,
                    fechaNacimiento: new Date(System.currentTimeMillis()-25),
                    fechaAlta: new Date(System.currentTimeMillis()),
                    cp: "28024",
                    tipoUsuario: TipoUsuario.usuario).save(flush:true)

            def usuarioRole = SecRole.findByAuthority("ROLE_USER") ?: new SecRole(authority: "ROLE_USER").save()
            def administradorRole = SecRole.findByAuthority("ROLE_ADMIN") ?: new SecRole(authority: "ROLE_ADMIN").save()
            def moderadorRole = SecRole.findByAuthority("ROLE_MODERATOR") ?: new SecRole(authority: "ROLE_MODERATOR").save()
            SecUserSecRole.create(usuario1, usuarioRole)
            SecUserSecRole.create(usuario2, usuarioRole)
            SecUserSecRole.create(usuario3, usuarioRole)
            SecUserSecRole.create(admin, administradorRole)
            SecUserSecRole.create(moderador, moderadorRole)

            //Eventos de prueba
            def eventoFuturo1 = new Evento(
                    titulo: "Ayudar a niños a crecer",
                    descripcion: "Vamos a ir a ayudar a unos niños a crecer, para ello pasaremos un dia con ellos viendo como crecen",
                    informacion: "El evento no se repite nunca!!!",
                    telefono: "669987545",
                    telefono2: "669987587",
                    fax: "9784587788",
                    email: "info@ayudame.com",
                    direccion: new Direccion( calle:"Calle Pindaro",
                                              numero: "23",
                                              cp: 28250,
                                              ciudad: "Las Rozas",
                                              provincia: "Madrid",
                                              latitud: "40.516793",
                                              longitud: "-3.907097").save(),
                    fechaInicio: new Date(System.currentTimeMillis())+21000,
                    fechaFin: new Date(System.currentTimeMillis())+20000,
                    estado: EstadoEvento.visible,
                    apuntados: [usuario1,usuario2]).save(flush:true)
            def eventoFuturo2 = new Evento(
                    titulo: "Hacer la colada a los necesitados",
                    descripcion: "Vamos a ir a una casa al mes para hacer la colada y la limpieza general en casas random",
                    informacion: "Muahahaha esta es mi casa!!!",
                    telefono: "66225458",
                    telefono2: "",
                    fax: "",
                    email: "info@quemorro.com",
                    direccion: new Direccion( calle:"Calle Quero",
                                              numero: "15 4ºD",
                                              cp: 28024,
                                              ciudad: "Madrid",
                                              provincia: "Madrid",
                                              latitud: "40.390267",
                                              longitud: "-3.761156").save(),
                    fechaInicio: new Date(System.currentTimeMillis())+20000,
                    fechaFin: new Date(System.currentTimeMillis())+20000,
                    estado: EstadoEvento.visible,
                    apuntados: [usuario1,usuario3,moderador,admin]).save(flush:true)
            def eventoPasado1 = new Evento(
                    titulo: "Comer gominolas con el krose",
                    descripcion: "Como nos gustan las gominolas!! vamos a ir a comer muchas!! veniros",
                    informacion: "El evento no se repite nunca!!!",
                    telefono: "669987545",
                    telefono2: "669987587",
                    fax: "9784587788",
                    email: "info@constantino.com",
                    direccion: new Direccion( calle:"Calle Pindaro",
                                              numero: "23",
                                              cp: 28250,
                                              ciudad: "Las Rozas",
                                              provincia: "Madrid",
                                              latitud: "40.516793",
                                              longitud: "-3.907097").save(),
                    fechaInicio: new Date(System.currentTimeMillis())-20000,
                    fechaFin: new Date(System.currentTimeMillis())-20000,
                    estado: EstadoEvento.visible,
                    apuntados: [usuario1,usuario2]).save(flush:true)
            def eventoPasado2 = new Evento(
                    titulo: "Aguma? divi di donga",
                    descripcion: "Vamos a echar una competi a los sims a ver quien consigue matar mas vecinos en menos tiempo",
                    informacion: "Instalaros el sims!",
                    telefono: "66225458",
                    telefono2: "",
                    fax: "",
                    email: "info@quemorro.com",
                    direccion: new Direccion( calle:"Calle Quero",
                                              numero: "15 4ºD",
                                              cp: 28024,
                                              ciudad: "Madrid",
                                              provincia: "Madrid",
                                              latitud: "40.390267",
                                              longitud: "-3.761156").save(),
                    fechaInicio: new Date(System.currentTimeMillis())-20000,
                    fechaFin: new Date(System.currentTimeMillis())-20100,
                    estado: EstadoEvento.visible,
                    apuntados: [usuario1,usuario3,moderador,admin]).save(flush:true)
        }
    }
}
